perm filename HBUG.PUB[2,TES] blob
sn#063457 filedate 1973-09-20 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .<< PUB DECLARATIONS >>
C00011 00003 .<< DEFINITIONS AND MACROS FOR BIT TABLES >>
C00013 00004 .<< TITLE PAGE >> BLANK PAGE
C00015 00005 .SEC Obsolete or Otherwise Useless UUOs,Obsolete UUOs,"UUOs, obsolete"
C00023 00006 .STANDARD BACK
C00029 00007 .PAGE FRAME 100 HIGH WCHARS+10 WIDE
C00031 ENDMK
C⊗;
.<< PUB DECLARATIONS >>
.<< THESE ARE LEFT ON/OFF OVER THE WHOLE MANUSCRIPT FOR CONVIENCE! >>
.TURN ON "{#%"
.TURN OFF "-" << Too many minus signs would be mistaken for hyphens. >>
.DEVICE XGP;
. FONT 6 "SHD40"
. FONT 5 "NGB25" << BOLD FONT FOR HEADINGS/TITLES >>
. FONT 4 "FIX20" << SOME EXAMPLES: SMALL FIXED WIDTH FONT >>
. FONT 3 "FIX25" << PREFORMATTED STUFF: FIXED WIDTH FONT >>
. FONT 2 "BDI25" << ITALICS (UNDERLINED WORDS) >>
. FONT 1 "BDR25" << NORMAL FONT: VARIABLE WIDTH >>
.IF XCRIBL THEN START
. !XGPLFTMAR ← 216;
. AT "⊗∪" STUFF "∩" ⊂
%2{}STUFF{}%*{ ⊃
.END ELSE START
. TURN ON "↓_"
. AT "⊗∪" STUFF "∩" ⊂
↓_STUFF_↓{ ⊃
.END
.HLINES← IF XCRIBL THEN 60 ELSE 53; << NUMBER OF LINES/PAGE >>
.WCHARS← IF XCRIBL THEN 81 ELSE 69; << NUMBER OF CHARS/LINE >>
.PAGE FRAME HLINES+1 HIGH WCHARS WIDE;
.TITLE AREA FOOTING LINE HLINES+1 CHARS 1 TO WCHARS;
.TITLE AREA HEADING LINES 1 TO 3 CHARS 1 TO WCHARS;
.AREA TEXTER LINES 4 TO HLINES CHARS 1 TO WCHARS;
.PLACE TEXTER;
.VARIABLE SECNAME, SSNAME, SSNUMBER;
.COUNT PAGE TO 999;
.COUNT SECTION;
.COUNT SUBSECTION IN SECTION PRINTING "!.1";
.COUNT APPENDIX;
.MACRO SEC(NAME,ABBREV,PHRASE,LABEL) ⊂
. SSNAME ← SECNAME ← IF "ABBREV"≠NULL THEN "ABBREV" ELSE "NAME";
. SSNUMBER ← (SECTION+1)&"."
. SKIP TO COLUMN 1; LABEL NEXT SECTION!;
. BEGIN
. CENTER
%5SECTION {!}
. SKIP
.NAM←↑"NAME";
{NAM}%*
. SKIP 3;
. CAT("PHRASE","NAME");
. SEND CONTENTS ⊂ SKIP 2;
∂4{SECTION!}∂8{NAM}→{PAGE!}{SKIP;⊃
. END ⊃
.MACRO SS(NAME,PHRASE,LABEL) ⊂
. SSNUMBER←SECTION!&"."&(SUBSECTION+1);
. SSNAME←"NAME";
. IF LINES≤7 THEN NEXT PAGE;
. LABEL NEXT SUBSECTION!;
. BEGIN
. SKIP 3
. CAT("PHRASE","NAME");
. SEND CONTENTS ⊂
∂(13){!}∂(19)NAME\∞ ∞.∞ →#{PAGE!}
. ⊃
. CENTER
%5{!}##NAME%*{ SKIP;
. END ⊃
.MACRO SSP(NAME,PHRASE,LABEL) ⊂
. SKIP TO COLUMN 1
.SS("NAME","PHRASE","LABEL") ⊃
.MACRO CAT(PHRASE,NAME) ⊂IF "PHRASE"≠NULL THEN
. IF "PHRASE"="←" THEN SEND INDEX ⊂}<{PAGE}≤NAME≥{⊃
. ELSE SEND INDEX ⊂}<{PAGE}≤PHRASE≥{⊃ ⊃
.AT "⊗→" SPECIFIC "↔" GENERIC "←" ⊂
.IF "GENERIC"≠NULL THEN
. START SEND INDEX ⊂}<{PAGE}≤GENERIC, SPECIFIC≥{⊃; "SPECIFIC GENERIC"; END
.ELSE START SEND INDEX ⊂}<{PAGE}≤SPECIFIC≥{⊃; "SPECIFIC"; END ⊃
.SEND INDEX ⊂}<see front cover≤UUOs by name≥{⊃
.SEND INDEX ⊂}<see back cover≤UUOs by number≥{⊃
.MACRO STANDARD BACK ⊂
.SSNAME ← "INDEX"; SECNAME ← SSNUMBER ← NULL
. BEGIN FILL NOJUST INDENT 0,3; PREFACE 0;
. AREA TEXTE LINES 4 TO 15 IN 2 COLUMNS 3 APART;
. PORTION INDEX;
. IF EVEN PAGE THEN NEXT PAGE;
. PLACE TEXTE;
. SELECT 1;
. SECNAME ← "INDEX";
. WASWORD ← WASPG ← NULL ;
. AT "<" PGNO "≤" PHRASE "≥" ⊂
. IF "PHRASE" ≠ WASWORD THEN START BREAK }PHRASE PGNO{ END
. ELSE IF "PGNO" ≠ WASPG THEN }, PGNO{ ;
. WASPG ← "PGNO" ; WASWORD ← "PHRASE" ; ⊃
INDEX
.SKIP
. RECEIVE "≤≥"
. END;
.SECNAME ← SSNAME ← "CONTENTS"
.SSNUMBER ← NULL
.COUNT PAGE PRINTING "i"
.PORTION CONTENTS
.FILL NOJUST CRBREAK TURN ON "←→∂\∞"
.INDENT 0,30,10 PREFACE 0 TABS 30,33,36,39,42,45,48,51,54,57,60,63
←T A B L E O F C O N T E N T S
.SKIP 3
SECTION→PAGE
.SKIP;
.RECEIVE
.⊃
.MACRO APP(NAME,ABBREV,PHRASE,LABEL) ⊂
. SECNAME ← IF "ABBREV"≠NULL THEN "ABBREV" ELSE "NAME";
. SSNUMBER ← NULL;
. SSNAME ← "Appendix "&(APPENDIX+1);
. SKIP TO COLUMN 1; LABEL NEXT APPENDIX!;
. BEGIN
. CENTER
%5APPENDIX {!}
. SKIP
.NAM←↑"NAME"
{NAM}%*
. SKIP 3
. CAT("PHRASE","NAME");
. SEND CONTENTS ⊂ SKIP;
∂4{APPENDIX!}∂8{NAM}→{PAGE!}{ ⊃
. END ⊃
.MACRO CENT (NAME,PHRASE) ⊂IF LINES ≤ 7 THEN SKIP TO COLUMN 1;;
.CAT("PHRASE","NAME");
.BEGIN CENTER SKIP 3
%5NAME%*
.SKIP; END
.⊃
.MACRO UUO (NAME,OPCODE,OP2) ⊂
.SKIP 3
.BEGIN NOFILL GROUP;TABS 9;TURN ON "\";
%5NAME%*\{IF "OPCODE"="CALLI" THEN
. START; "[OP=047, ADR=OP2] CALLI OP2"; CAT "NAME UUO (CALLI OP2)";
. SEND NAMETABLE ⊂}<NAME≤CALLI OP2≥{PAGE}>{⊃ END
.XTDUUO(TTYUUO,051,OPCODE,OP2,NAME)
.XTDUUO(PTYUUO,711,OPCODE,OP2,NAME)
.XTDUUO(PPIOT,702,OPCODE,OP2,NAME)
.XTDUUO(PGIOT,715,OPCODE,OP2,NAME)
.XTDUUO(INTUUO,723,OPCODE,OP2,NAME)
.XTDUUO(MAIL,710,OPCODE,OP2,NAME)
.ELSE START; "[OP=OPCODE]"; CAT "NAME UUO (UUO OPCODE)";
. SEND NAMETABLE ⊂}<NAME≤OPCODE≥{PAGE}>{⊃ END
.TURN OFF;SVERBATIM
------------------------------------------
.⊃
.MACRO XTDUUO(GROUPNAME,OPCODE,NAME,ACFIELD,SPECUUO)⊂ELSE IF "NAME"="GROUPNAME" THEN
.START; "[OP=OPCODE, AC=ACFIELD] GROUPNAME ACFIELD,";
. CAT "SPECUUO UUO (GROUPNAME ACFIELD, )"
. SEND NAMETABLE ⊂}<SPECUUO≤GROUPNAME ACFIELD,≥{PAGE}>{⊃ END ⊃
.MACRO UUOX ⊂BEGIN SKIP 3; GROUP SVERBATIM
------------------------------------------
.⊃
.MACRO OLDUUO (NAME,OPCODE,OP2) ⊂
.BEGIN NOFILL;TABS 9;TURN ON "\";
%5NAME%*\{IF "OPCODE"="CALLI" THEN
. START; "[OP=047, ADR=OP2] CALLI OP2"; CAT "NAME UUO (CALLI OP2)";
. SEND NAMETABLE ⊂}<NAME≤CALLI OP2≥{PAGE}>{⊃ END
.ELSE "[OP=OPCODE]"
.END
.⊃
.MACRO UEND ⊂SKIP; IF LINES > 2 THEN APART; FILL; SELECT 1 ⊃
.MACRO SVERBATIM ⊂VERBATIM; SELECT 3 ⊃
.COUNT FOOTNOTE INLINE TO 4 IN PAGE PRINTING ⊂"****"[1 TO FOOTNOTE]⊃;
.AT "⊗↓" ENTRY "←" ⊂NEXT FOOTNOTE ; ! ;
.SEND FOOT ⊂
{!} ENTRY
.BREAK ⊃ ⊃
.NBRXTDUUOS←"six" << the number of extended UUOs, which see in INTRODUCTION >>
.MACRO YON (LABEL) ⊂"page ";PAGE! LABEL⊃
.MACRO YONAPP (LABEL) ⊂"Appendix ";APPENDIX! LABEL⊃
.MACRO YONSEC (LABEL) ⊂"Section ";SECTION! LABEL⊃
.MACRO YONSS (LABEL) ⊂"Section ";SUBSECTION! LABEL⊃
.<< DEFINITIONS AND MACROS FOR BIT TABLES >>
.<< HERE IS A SAMPLE MULTIPLE-BIT TABLE ENTRY:
. "30:35\0,,77\" END OF COMMENT >>
.B0 ← " 0\400000,,0\"
.B1 ← " 1\200000,,0\"
.B2 ← " 2\100000,,0\"
.B3 ← " 3\40000,,0\"
.B4 ← " 4\20000,,0\"
.B5 ← " 5\10000,,0\"
.B6 ← " 6\4000,,0\"
.B7 ← " 7\2000,,0\"
.B8 ← " 8\1000,,0\"
.B9 ← " 9\400,,0\"
.B10 ← "10\200,,0\"
.B11 ← "11\100,,0\"
.B12 ← "12\40,,0\"
.B13 ← "13\20,,0\"
.B14 ← "14\10,,0\"
.B15 ← "15\4,,0\"
.B16 ← "16\2,,0\"
.B17 ← "17\1,,0\"
.B18 ← "18\0,,400000\"
.B19 ← "19\0,,200000\"
.B20 ← "20\0,,100000\"
.B21 ← "21\0,,40000\"
.B22 ← "22\0,,20000\"
.B23 ← "23\0,,10000\"
.B24 ← "24\0,,4000\"
.B25 ← "25\0,,2000\"
.B26 ← "26\0,,1000\"
.B27 ← "27\0,,400\"
.B28 ← "28\0,,200\"
.B29 ← "29\0,,100\"
.B30 ← "30\0,,40\"
.B31 ← "31\0,,20\"
.B32 ← "32\0,,10\"
.B33 ← "33\0,,4\"
.B34 ← "34\0,,2\"
.B35 ← "35\0,,1\"
.MACRO BITSTABLE(NM,TITLE)⊂BEGIN
. NARROW 2,2; GROUP; TABS 8,22,31; TURN ON "\";
. IF "NM"=NULL THEN TABLEINDENT←21 ELSE TABLEINDENT←30;
. INDENT 0,TABLEINDENT;
⊗∪Bits\Octal\{IF "NM"≠NULL THEN "Name\"}TITLE∩
. BREAK ⊃
.<< TITLE PAGE >> BLANK PAGE
.INSERT NAMETABLE;
.INSERT NUMBERTABLE;
.PORTION TITLEPAGE;
.SELECT 1
.BEGIN "TITLE"; NOFILL; TURN ON "→"; SELECT 5;
STANFORD ARTIFICIAL INTELLIGENCE LABORATORY→September 1973
OPERATING NOTE 55.3
.IF XCRIBL THEN SKIP 5
.SKIP 7;CENTER
%6U U O M A N U A L%*
.SKIP 3
by
.SKIP 2
Martin Frost
.END "TITLE"
.IF XCRIBL THEN SKIP 6;
.BEGIN "ABSTRACT"; SKIP 4;
ABSTRACT:
This document describes the UUOs (monitor calls) available
to users of the Stanford Artificial Intelligence Laboratory timesharing system.
Additional general information relevant to the use of the UUOs is contained
in the introductory section, and some useful
tables are included in the appendices.
This manual supersedes SAILON 55.2 by Andy Moorer (Monitor Manual,
Chapter II).
.IF XCRIBL THEN SKIP 4
.SKIP 6;
This work was supported by the Advanced Research Projects Agency of
the Office of the Secretary of Defense under contract SD-183.
.END "ABSTRACT"
.SECNAME ← SSNUMBER ← SSNAME ← NULL
.ODD HEADING(%5{SSNUMBER},,{SSNAME} {PAGE}%*)
.EVEN HEADING(%5{PAGE} {SECNAME},,{SSNUMBER}%*)
.INSERT CONTENTS;
.PORTION MAINPORTION;
.SEC Obsolete or Otherwise Useless UUOs,Obsolete UUOs,"UUOs, obsolete"
This section documents some UUOs that still work but which, for
various reasons, are obsolete. Mentioned at the end of this section
are some other UUOs that are ever more obsolete in that they do not work.
In general, there are better ways
to do the things all of these UUOs do, but the documentation is included
for completeness and for the benefit of people trying to decode
rusty old programs which use these UUOs. Users are to be discouraged
from using these in any new pieces of code.
.SS Old UUOs
Here are some UUOs that still work although they are generally unnecessary.
.UUO(INTIIP,CALLI,400031)
INTIIP AC,
.UEND
The INTIIP UUO is designed to be given by a process running at interrupt level.
It returns in AC the bit representing the source of the current interrupt.
This is a copy of the value of ⊗→JOBCNI↔← at the time your interrupt-level
routine is started up. Thus it is much more efficient to do a MOVE#AC,JOBCNI
and the results are the same. If you give this UUO when you are not at
interrupt level, then zero is returned in AC.
.END
.UUO(USKIP,CALLI,400041)
USKIP
<return if no UUO in progress>
.UEND
The USKIP UUO can be used by an interrupt-level process to determine
if the interrupted program was in the middle of executing a UUO.
USKIP will skip if there was a UUO in progress at the time the interrupt
occurred and will take the direct return if no UUO was being executed.
Thus this UUO will tell you whether a UWAIT will return immediately.
The USKIP UUO is illegal except at interrupt level.
.END
.UUO(LIOTM,CALLI,400006)
LIOTM
.UEND
The LIOTM UUO gets you out of IOT-USER mode, thus
making opcodes over 700 into UUOs again. However, this function can be
achieved without doing a UUO at all. For instance, a
.BEGIN SVERBATIM
JRST 2,@[.+1]
.END CONTINUE
will also get you out of IOT-USER mode. See the writeup of IOT-USER
mode in {YONAPP PDP10STUFF}.
.END
.UUO(RUNMSK,CALLI,400046)
MOVEI AC,<processor enable bits>
RUNMSK AC,
.UEND
The RUNMSK UUO is intended to allow you to select which processor (the
PDP-10 or the PDP-6) should run your job. However, the PDP-6 is not
capable of running jobs; thus this UUO is useless.
.END
.UUO(DDTIN,CALLI,1)
MOVEI AC,ADR
DDTIN AC,
ADR: <21 word block for returned characters>
.UEND
The DDTIN UUO is used to read in all characters that have been typed on
the teletype attached to your job. This UUO does not wait for any
special activation character; it just reads whatever is in the teletype
input buffer and returns those characters in the block pointed to by the
contents of AC. This block should be at least 21 words long in order to
hold all the characters being read; at most =84 characters will be read.
The characters are returned as an
ASCIZ string at ADR (7 bits per character, 5 characters per word, with a
null (zero) byte after the last character read).
If the teletype input buffer is empty, this UUO will not return until a
character is typed. Thus at least one character is returned each time
this UUO is given.
TTYUUO (see {YONSS TTYUUOSS}) provides generally more convenient ways of
reading characters from the teletype.
.END
.UUO(DDTOUT,CALLI,3)
MOVEI AC,ADR
DDTOUT AC,
ADR: <ASCIZ string to be typed out>
.UEND
The DDTOUT UUO types out an ASCIZ string on the teletype. AC should contain
the address of the first word of the string. The string is terminated by the
first null (zero) byte. The OUTSTR UUO (see {YON OUTSTRUUO})
is the recommended way of typing out strings although this UUO still works.
.END
.UUO(GETCHR,CALLI,6)
MOVE AC,[<device name in sixbit, or channel number>]
GETCHR AC,
.UEND
The GETCHR UUO does exactly the same thing as the DEVCHR UUO; see {YON DEVCHRUUO}.
.END
.UUO(SEGSIZ,CALLI,400022)
SEGSIZ AC,
.UEND
The SEGSIZ UUO returns in AC the size of your upper segment. The size
returned is the protection constant of your segment, i.e.,
the number of words in it minus one. If you
have no upper segment attached, zero is returned.
This segment size can be found out more easily by looking at JOBHRL
in the job data area (see {YONAPP JOBDATA}).
.END
.SS Privileged UUOs
The UUOs listed below are privileged UUOs designed for use only by the
LOGIN and LOGOUT programs.
.SKIP
.OLDUUO(LOGIN,CALLI,15)
.OLDUUO(LOGOUT,CALLI,17)
.SS Useless UUOs
Each of the following unimplemented UUOs is either illegal or a no-op.
.SKIP 2
.OLDUUO(DDTGT,CALLI,5)
.OLDUUO(DDTRL,CALLI,7)
.OLDUUO(TRPSET,CALLI,25)
.OLDUUO(TRPJEN,CALLI,26)
.OLDUUO(RUN,CALLI,35)
.OLDUUO(GETSEG,CALLI,40)
.OLDUUO(GETTAB,CALLI,41)
.OLDUUO(GDPTIM,CALLI,400065)
.OLDUUO(XPARMS,CALLI,400103)
.OLDUUO(,042)
.OLDUUO(,044)
.OLDUUO(,045)
.OLDUUO(,046)
.OLDUUO(,052)
.OLDUUO(,053)
.OLDUUO(,054)
.OLDUUO(,700)
.STANDARD BACK
.EVERY HEADING(,,);
.PORTION NUMBERTABLE
.PAGE FRAME 100 HIGH WCHARS WIDE
.AREA UUOS_BY_NUMBER LINES 10 TO 100 IN 5 COLUMNS 11 WIDE
.PLACE UUOS_BY_NUMBER << this is the back cover of the manual >>
.BEGIN SELECT 4; NOFILL
-----UUOs-----
Opcode Name
040 CALL
041 INIT
043 SPCWAR
047 CALLI
050 OPEN
051 TTYUUO
055 RENAME
056 IN
057 OUT
060 SETSTS
061 STATO
062 GETSTS
063 STATZ
064 INBUF
065 OUTBUF
066 INPUT
067 OUTPUT
070 CLOSE
071 RELEAS
072 MTAPE
073 UGETF
074 USETI
075 USETO
076 LOOKUP
077 ENTER
701 DPYCLR
702 PPIOT
703 UPGIOT
704 UINBF
705 UOUTBF
706 FBREAD
707 FBWRT
710 MAIL
711 PTYUUO
712 POINTS
713 UPGMVE
714 UPGMVM
715 PGIOT
716 CHNSTS
717 CLKINT
720 INTMSK
721 IMSKST
722 IMSKCL
723 INTUUO
.SKIP TO COLUMN 2
----CALLIs----
Number Name
0 RESET
1 DDTIN
2 SETDDT
3 DDTOUT
4 DEVCHR
5 DDTGT
6 GETCHR
7 DDTRL
10 WAIT
11 CORE
12 EXIT
13 UTPCLR
14 DATE
15 LOGIN
16 APRENB
17 LOGOUT
20 SWITCH
21 REASSI
22 TIMER
23 MSTIME
24 GETPPN
25 TRPSET
26 TRPJEN
27 RUNTIM
30 PJOB
31 SLEEP
32 SETPOV
33 PEEK
34 GETLN
35 RUN
36 SETUWP
37 REMAP
40 GETSEG
41 GETTAB
400000 SPWBUT
400001 CTLV
400002 SETNAM
400003 SPCWGO
400004 SWAP
400005 EIOTM
400006 LIOTM
400007 PNAME
400010 UFBGET
400011 UFBGIV
.SKIP TO COLUMN 3
----CALLIs----
Number Name
400012 UFBCLR
400013 JBTSTS
400014 TTYIOS
400015 CORE2
400016 ATTSEG
400017 DETSEG
400020 SETPRO
400021 SEGNUM
400022 SEGSIZ
400023 LINKUP
400024 DISMIS
400025 INTENB
400026 INTORM
400027 INTACM
400030 INTENS
400031 INTIIP
400032 INTIRQ
400033 INTGEN
400034 UWAIT
400035 DEBREA
400036 SETNM2
400037 SEGNAM
400040 IWAIT
400041 USKIP
400042 BUFLEN
400043 NAMEIN
400044 SLEVEL
400045 IENBW
400046 RUNMSK
400047 TTYMES
400050 JOBRD
400051 DEVUSE
400052 SETPR2
400053 GETPR2
400054 RLEVEL
400055 UFBPHY
400056 UFBSKP
400057 FBWAIT
400060 UFBERR
400061 WAKEME
400062 GETNAM
400063 SNEAKW
400064 SNEAKS
400065 GDPTIM
400066 SETPRV
.SKIP TO COLUMN 4
----CALLIs----
Number Name
400067 DDCHAN
400070 VDSMAP
400071 DSKPPN
400072 DSKTIM
400073 SETCRD
400074 CALLIT
400075 XGPUUO
400076 LOCK
400077 UNLOCK
400100 DAYCNT
400101 ACCTIM
400102 UNPURE
400103 XPARMS
400104 DEVNUM
400105 ACTCHR
400106 UUOSIM
400107 PPSPY
----PPIOTs----
Number Name
0, PPSEL
1, PPACT
2, DPYPOS
3, DPYSIZ
4, PPREL
5, PPINFO
6, LEYPOS
7, PPHLD
----PGIOTs----
Number Name
0, PGSEL
1, PGACT
2, PGCLR
3, DDUPG
4, PGINFO
----INTUUOs---
Number Name
0, INTJEN
1, IMSTW
2, IWKMSK
3, INTDMP
4, INTIPI
5, IMSKCR
.SKIP TO COLUMN 5
----TTYUUOs---
Number Name
0, INCHRW
1, OUTCHR
2, INCHRS
3, OUTSTR
4, INCHWL
5, INCHSL
6, GETLIN
7, SETLIN
10, RESCAN
11, CLRBFI
12, CLRBFO
13, INSKIP
14, INWAIT
15, SETACT
16, TTREAD
17, OUTFIV
----PTYUUOs---
Number Name
0, PTYGET
1, PTYREL
2, PTIFRE
3, PTOCNT
4, PTRD1S
5, PTRD1W
6, PTWR1S
7, PTWR1W
10, PTRDS
11, PTWRS7
12, PTWRS9
13, PTGETL
14, PTSETL
15, PTLOAD
16, PTJOBX
---MAIL UUOs--
Number Name
0, SEND
1, WRCV
2, SRCV
3, SKPME
4, SKPHIM
5, SKPSEN
.END
.PAGE FRAME 100 HIGH WCHARS+10 WIDE;
.PORTION NAMETABLE << this is the front cover of the manual >>;
.TITLE AREA FOOTING LINE 99;
.TITLE AREA MANUAL_TITLE LINE 5 CHARS 1 TO WCHARS;
.PLACE MANUAL_TITLE;
.CENTER; SELECT 6;
UUO MANUAL
.PLACE TEXT
.NOFILL; SELECT 4;
.AREA UUOS_BY_NAME LINES 10 TO 20 CHARS 1 TO WCHARS+1 IN 4 COLUMNS 19 WIDE;
.PLACE UUOS_BY_NAME;
Name........UUO......Page
.AT "<" UUONAM "≤" OP "≥" PAGENO ">" ⊂
.IF LINE≥7 THEN START; SKIP TO COLUMN COLUMN+1;
Name........UUO......Page
.END;
UUONAM{(" "[1 TO (8-CHAR)])}OP{
.(" "[1 TO (17-LENGTH("OP"&"PAGENO"))])}PAGENO
.⊃
.RECEIVE "<≤"